// 初始化 state 时，从本地储存中获取
const state = {
  userInfo: localStorage.getItem("userInfo")
    ? JSON.parse(localStorage.getItem("userInfo"))
    : null, // 当前的用户信息
  token: localStorage.getItem("token"), // 当前用户的token
};

const getters = {
  username(state) {
    return state.userInfo && state.userInfo.username;
  },
  // total() {
  //   return "100";
  // },
};

const mutations = {
  abcd() {
    console.log("User 模块的 abcd");
  },
  set_userInfo(state, payload) {
    state.userInfo = payload;
    // 改变仓库数据的同时，本地做一个存储
    localStorage.setItem("userInfo", JSON.stringify(payload));
  },
  set_token(state, payload) {
    state.token = payload;
    // 改变仓库数据的同时，本地做一个存储
    localStorage.setItem("token", payload);
  },
};

const actions = {
  abcda() {
    console.log("User 模块的 abcda");
  },
  login({ commit }) {
    // 1. 做异步操作调用后端的登录接口
    setTimeout(() => {
      // 登录成功，得到一份后端返回的数据
      const response = {
        userInfo: {
          username: "张三",
          gender: 0,
        },
        token: "abcdefg",
      };

      // 2. 成功之后，在 提交突变 修改 state 的数据
      commit("set_userInfo", response.userInfo);
      commit("set_token", response.token);
    }, 2000);
  },
};

export default {
  // 命名空间
  namespaced: true,
  state,
  getters,
  mutations,
  actions,
};
